package org.jwd.core.anno;

import org.jwd.core.consts.OptType;

import java.lang.annotation.*;

/**
 * @author vizz
 * @since 2022/5/19 9:14
 * 审计笔录！如果某个方法上打了这个注解，那么任何人调了这个方法的时候都会留下记录
 * 如果是修改数据库类型的操作，还会记录类型（CRUD），然后支持撤销
 * 如果把这个逻辑实现了，离分布式事务也不远了
 * 目前只审计方法的第一个参数
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AuditRecord {

    OptType optType() default OptType.SELECT;//默认是查找类的，查找类不是很要求审计。

//    Class<?> argsClass() default Object.class;//默认Object类，当然这是废话。

//    int paramNum() default 1;//默认只找第一个参数。目前的业务也是只找第一个参数

//    String auditTableName() default "default";//希望储存在哪张审计表，默认是default，也没打算改。
    boolean paramIsId() default false;
}
